/***************************************************************************
创建者：华磊
 开始时间：               : 2020.1１.21
 copyright            : (C) 深圳市华友高科有限公司
 修改说明：（每次有修改就添加一条，带有 修改人，修改时间，修改描述）

 ***************************************************************************
 *   消息视窗
*                                                                         *
 ***************************************************************************/
#ifndef MESSAGEVIEW_H
#define MESSAGEVIEW_H

#include "messageview_global.h"
#include <QVector>
#include <QDialog>
#include <QScrollBar>
#include <QHeaderView>
#include <QTranslator>

#include"../CommunicateDelegate/hmicommunicate.h"

#define MSG_SIZE_MAX 15

namespace Ui {
class MessageView;
}

/**
 * @brief The MessageView class　消息视窗类
 */
class MESSAGEVIEWSHARED_EXPORT MessageView : public QDialog
{
    Q_OBJECT

public:
    explicit MessageView(int styleId,QWidget *parent = 0);
    ~MessageView();

    /**
     * @brief updateView　更新数据到控件上
     */
    void updateView();

    void setViewText();

    void initialDisplayStyle(int styleId);

private:
    QTranslator translator;

public:
    /**
     * @brief message　所有机器人消息
     */
    QVector<Message> message;

    /**
     * @brief selectMessage　筛选显示的机器人信息
     */
    QVector<Message> selectMessage;

    /**
     * @brief errorFlag　错误消息显示标志
     */
    int errorFlag;

    /**
     * @brief warnFlag　警告消息显示标志
     */
    int warnFlag;

    /**
     * @brief noteFlag　提示消息显示标志
     */
    int noteFlag;

    /**
     * @brief waitFlag　等待消息显示标志
     */
    int waitFlag;

    /**
     * @brief robotName　当前机器人名称
     */
    QString robotName;
    int robotID;

    /**
     * @brief showType  消息显示类型　０：显示当前机器人　１：显示全部机器人
     */
    int showType;

    /**
     * @brief messageLevelPicture　消息级别图标地址
     */
    QString messageLevelPictureError;
    QString messageLevelPictureWarn;
    QString messageLevelPictureNote;
    QString messageLevelPictureWait;

    time_t timep;//需要后期再改动
    struct tm* p;

signals:
    /**
     * @brief clearMessage　清除选中消息信号函数
     * @param messageIndex　当前消息行号
     */
    void clearMessage(int messageIndex);

    /**
     * @brief clearAllMessage　清除全部消息信号函数
     */
    void clearAllMessage();
    void clearMsgAndServoOn_signal();

    /**
     * @brief errorMessageShowOrHide　错误消息显示与否信号函数
     * @param errorFlag　错误消息显示与否标志
     */
    void errorMessageShowOrHide(int errorFlag);

    /**
     * @brief warnMessageShowOrHide　警告消息显示与否信号函数
     * @param warnFlag　警告消息显示与否标志
     */
    void warnMessageShowOrHide(int warnFlag);

    /**
     * @brief noteMessageShowOrHide　提示消息显示与否信号函数
     * @param noteFlag　提示消息显示与否标志
     */
    void noteMessageShowOrHide(int noteFlag);

    /**
     * @brief waitMessageShowOrHide　等待消息显示与否信号函数
     * @param waitFlag　等待消息显示与否标志
     */
    void waitMessageShowOrHide(int waitFlag);

    /**
     * @brief showCurrentRobotMessage　显示当前机器人消息信号函数
     */
    void showCurrentRobotMessage();

    /**
     * @brief showAllRobotMessage　显示全部机器人消息信号函数
     */
    void showAllRobotMessage();

private slots:
    /**
     * @brief on_ClearCurrentMessageBtn_clicked　清除选中消息响应槽函数
     */
    void on_ClearCurrentMessageBtn_clicked();

    /**
     * @brief on_ClearAllMessageBtn_clicked　清除全部消息响应槽函数
     */
    void on_ClearAllMessageBtn_clicked();

    /**
     * @brief on_error_checkBox_clicked　错误消息显示与否响应槽函数
     */
    void on_error_checkBox_clicked();

    /**
     * @brief on_warn_checkBox_clicked　警告消息显示与否响应槽函数
     */
    void on_warn_checkBox_clicked();

    /**
     * @brief on_note_checkBox_clicked　提示消息显示与否响应槽函数
     */
    void on_note_checkBox_clicked();

    /**
     * @brief on_wait_checkBox_clicked　等待消息显示与否响应槽函数
     */
    void on_wait_checkBox_clicked();

    /**
     * @brief on_currentRobot_rBtn_clicked　显示当前机器人消息响应槽函数
     */
    void on_currentRobot_rBtn_clicked();

    /**
     * @brief on_allRobot_rBtn_clicked　显示全部机器人消息响应槽函数
     */
    void on_allRobot_rBtn_clicked();

    void changeLanguageSlot(int language);

    void on_button_clrMsgAndServoOn_clicked();

private:
    Ui::MessageView *ui;

    /**
     * @brief tmpIcon               icon缓存
     */
    QVector <QIcon > tmpIcon;

    QStringList tableHeadLable;

    int msgSize;

    int selectSize;
};

#endif // MESSAGEVIEW_H
